<?php

if (!defined('BASEPATH'))
    exit('No direct script access allowed');

class consumos extends CI_Controller {

    public function __construct() {
        parent::__construct();
        session_start();
        $this->estaLogueado();
        $this->load->model('reservaM');
        $this->load->model('impuestoM');
        $this->load->model('cliente_x_reservaM');
        $this->load->model('categoria_producto_servicioM');
        $this->load->model('venta_producto_servicioM');
    }

    public function index() {
        if ($this->validarReserva()) {
            $data = array();
            $this->loadData($data);
            // var_dump($data);
            $this->load->view('header', $data);
            $this->load->view('menuCalendarioV/headMenuCalendario');
            $this->load->view('menuCalendarioV/consumosV');
            $this->load->view('menuCalendarioV/footerMenuCalendario');
            $this->load->view('footer');
        } else {
            $_SESSION["mensaje"]["contenido"] = " La reserva no existe.";
            $_SESSION["mensaje"]["tipo"] = "advertencia";
            header("Location:calendario");
        }
    }

    private function loadData(&$data) {
        $this->escapar($_GET);
        $idReserva = $_GET["reserva"];
        $data["tab"] = "consumos";
        $data["moneda"] = $_SESSION["establecimiento"]["moneda"];
        $data["consumos"] = $this->venta_producto_servicioM->obtenerVentas($idReserva);
        foreach ($data["consumos"] as $row) {
            $row->fecha = new DateTime($row->fecha);
            $row->fecha = $row->fecha->format('d/m/Y H:i:s');
        }
        $data["huespedes"] = $this->cliente_x_reservaM->cargarHuespedes($idReserva);
        $data["categorias"] = $this->categoria_producto_servicioM->obtenerCategorias($_SESSION["establecimiento"]["id_establecimiento"]);
        $data["impuestos"] = $this->impuestoM->obtenerImpuestos($_SESSION["establecimiento"]["id_establecimiento"]);
        $data["estadoReserva"] = $this->reservaM->obtenerDatos("checkin_realizado,checkout_realizado", $idReserva);
    }

    private function validarReserva() {
        if (!empty($_GET["reserva"])) {
            $r = $this->reservaM->esMiReserva($_GET["reserva"], $_SESSION['establecimiento']['id_establecimiento']);
            if ($r[0]->cantidad == 1) {
                return true;
            } else {
                return false;
            }
        }
    }

    public function crearConsumo() {
        $this->load->model('producto_x_ventaM');
        $this->load->model('clienteM');
        $this->load->model('producto_servicioM');
        $this->escapar($_POST);
        $flag = false;
        if (!empty($_POST["idReserva"]) && $this->validarReservaPost($_POST["idReserva"])) {
            if (!empty($_POST["cliente"])) {
                $idEstablecimiento = $_SESSION["establecimiento"]["id_establecimiento"];
                $usuario = $_SESSION["usuario"]["id_usuario"];
                $esMiCliente = $this->clienteM->esMiCliente($_POST["cliente"], $idEstablecimiento);

                if ($esMiCliente[0]->cantidad == 1) {
                    $impuesto = $_POST["total"] + $_POST["descuento"] - $_POST["subtotal"];
                    $_POST["total"] = $_POST["total"] - $impuesto;
                    $this->venta_producto_servicioM->insertarVenta($_POST["idReserva"], $_POST["cliente"], $impuesto, $_POST["descuento"], $_POST["total"], $usuario, $_POST["nota"]);
                    $pagar = $impuesto + $_POST["total"];
                    $idVentaServicio = mysql_insert_id();
                    $this->reservaM->actualizarTotalPagar($pagar, $_POST["idReserva"]);
                    $this->producto_x_ventaM->insertarRegistro($_POST["productoServicio"], $idVentaServicio, $_POST["cantidad"]);
                    $tieneInventario = $this->categoria_producto_servicioM->tieneInventario($_POST["categoria"]);
                    if ($tieneInventario[0]->cantidad == 1) {
                        $this->producto_servicioM->actualizarInventario($_POST["productoServicio"], $_POST["cantidad"]);
                    }
                    $this->reservaM->actualizarEstatus($_POST["idReserva"]);
                    $flag = true;
                }
            }
        }
        if ($flag) {
            $_SESSION["mensaje"]["contenido"] = "El consumo se creó exitosamente.";
            $_SESSION["mensaje"]["tipo"] = "exito";
            header("Location:../../consumos?reserva={$_POST["idReserva"]}");
        } else {
            $_SESSION["mensaje"]["contenido"] = "El consumo no se pudo crear.";
            $_SESSION["mensaje"]["tipo"] = "advertencia";
            header("Location:../../calendario");
        }
    }

    public function eliminarConsumo() {
        $this->load->model('producto_x_ventaM');
        $this->load->model('producto_servicioM');

        $this->escapar($_POST);
        $flag = false;
        if (!empty($_POST["idReserva"]) && $this->validarReservaPost($_POST["idReserva"])) {
            if (!empty($_POST["idVentaServicio"]) && !empty($_POST["idCategoriaProducto"]) && !empty($_POST["idServicio"])) {
                $idEstablecimiento = $_SESSION["establecimiento"]["id_establecimiento"];


                $tieneInventario = $this->categoria_producto_servicioM->tieneInventario($_POST["idCategoriaProducto"]);
                if ($tieneInventario[0]->cantidad == 1) {
                    $cantidad = $this->producto_x_ventaM->obtenerDatos("cantidad", $_POST["idServicio"], $_POST["idVentaServicio"]);
                    $cantidad = $cantidad[0]->cantidad * -1;
                    $this->producto_servicioM->actualizarInventario($_POST["idServicio"], $cantidad);
                }
                $valorVenta = $this->venta_producto_servicioM->obtenerDatos("total_venta,impuesto", $_POST["idVentaServicio"]);
                $valorVenta = $valorVenta[0]->total_venta + $valorVenta[0]->impuesto;
                $this->reservaM->descontarVenta($valorVenta, $_POST["idReserva"]);
                $this->venta_producto_servicioM->eliminarVenta($_POST["idVentaServicio"], $idEstablecimiento);
                $flag = true;
            }
        }
        if ($flag) {
            $_SESSION["mensaje"]["contenido"] = "El consumo se eliminó exitosamente.";
            $_SESSION["mensaje"]["tipo"] = "exito";
            header("Location:../consumos?reserva={$_POST["idReserva"]}");
        } else {
            $_SESSION["mensaje"]["contenido"] = "El consumo no se pudo eliminar.";
            $_SESSION["mensaje"]["tipo"] = "advertencia";
            header("Location:../calendario");
        }
    }

    private function validarReservaPost($idReserva) {
        $r = $this->reservaM->esMiReserva($idReserva, $_SESSION['establecimiento']['id_establecimiento']);
        if ($r[0]->cantidad == 1) {
            return true;
        } else {
            return false;
        }
    }

    private function formatoFechaVista(&$fecha) {
        $fecha = explode("-", $fecha);
        $fecha = "$fecha[2]/$fecha[1]/$fecha[0]";
    }

}